package persistence;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import model.Conjunto;

public abstract class APConjunto_Prenda {

	public static void insertarAPConjunto_Prenda(Conjunto conj) {
		// Obtener conexion BD
		Connection con = AdministradorConexiones.getInstancia().crearConexion();

		// Generar sentencia SQL
		try {
			// Preparar sentencia insert en tabla destino
			
			PreparedStatement ps = null;
			
			for(int i=0; i<conj.getPrendas().size(); i++){
			String senten = "INSERT INTO Conjunto_Ropa (idRopa, idRopaQueContiene) VALUES (?,?)";
			ps = con.prepareStatement(senten);		
			ps.setInt(1, conj.getCodigo());
			ps.setInt(2, conj.getPrendas().elementAt(i).getCodigo());
			ps.execute();
			}

			AdministradorConexiones.getInstancia().cerrarConexion(con);
		} catch (SQLException e) {
			System.out.println("Mensaje Error al Insertar APConjunto_Prenda: " + e.getMessage());
			System.out.println("Stack Trace al Insertar APConjunto_Prenda: " + e.getStackTrace());
			AdministradorConexiones.getInstancia().cerrarConexion(con);
		}
	}


		public static void borrarAPConjunto_Prenda(int conjuntoId) {
		// Obtener conexion BD
		Connection con = AdministradorConexiones.getInstancia().crearConexion();

		// Generar sentencia SQL
		try {
			// Preparar sentencia insert en tabla destino	
			String senten = "DELETE FROM Conjunto_Ropa where idRopa= ?";
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.setInt(1, conjuntoId);
			ps.execute();

			AdministradorConexiones.getInstancia().cerrarConexion(con);

		} catch (SQLException e) {
			System.out.println("Mensaje Error al Borrar APConjunto_Prenda: " + e.getMessage());
			System.out.println("Stack Trace al Borrar APConjunto_Prenda: " + e.getStackTrace());
			AdministradorConexiones.getInstancia().cerrarConexion(con);
		}
	}

	public static Vector<Conjunto> buscarPrendaEnConjuntosActivos(int prendaId){

		Vector<Conjunto> conjuntos = new Vector<Conjunto>();
		Connection con = AdministradorConexiones.getInstancia().crearConexion();

		// Generar sentencia SQL
		try {
			// Preparar sentencia select
			String senten = "select * from Conjunto_Ropa cp inner join ropa con on cp.idRopa = con.idRopa where estado = 1 and cp.idRopa = ?";
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.setInt(1, prendaId);
			ResultSet result = ps.executeQuery();
			
			while (result.next()) {
					conjuntos.add(new Conjunto(result.getInt("conjuntoId"), result.getString("nombre"),result.getFloat("descuento"),APConjunto.getPrendasDeConjunto(result.getInt("conjuntoId"))));					
			}

			AdministradorConexiones.getInstancia().cerrarConexion(con);
			return conjuntos;
		} catch (SQLException e) {
			System.out.println("Mensaje Error al Buscar Prendas: " + e.getMessage());
			System.out.println("Stack Trace al Buscar Prendas: " + e.getStackTrace());
			AdministradorConexiones.getInstancia().cerrarConexion(con);
		}
		return null;
	}


}

